﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WpfAgendaContato.Modelos
{
    class Funcionario
    {
        private Pessoa funcionario;
        private String estadoCivil;
        private String registroGeral;
        private long CPF;
        private int quantidadeDeFilhos;
        private float comisao;
        private String senha;
        private String credencial;

        public Funcionario()
        {
            funcionario = new Pessoa();
            estadoCivil = "";
            registroGeral = "";
            CPF = 0;
            quantidadeDeFilhos = 0;
            comisao = 0;
            senha = "";
            credencial = "";

        }

        public void setCodigo(int codigo) { funcionario.setCod(codigo); }
        public int getCodigo() { return funcionario.getCodigo(); }
        public void setNome(String nome) { funcionario.setNome(nome); }
        public String getNome() { return funcionario.getNome(); }
        public void setReferencia(String referencia) { funcionario.setReferencia(referencia); }
        public String getReferencia() { return funcionario.getReferencia(); }
        public void setDataDeNascimento(int dia, int mes, int ano) { funcionario.setDataDeNascimento(dia, mes, ano); }
        public void getDataDeDascimento(ref int dia, ref int mes, ref int ano) { funcionario.getDataDeDascimento(ref dia, ref mes, ref ano); }
        public void setEndereco(String endereco) { funcionario.setEndereco(endereco); }
        public String getEndereco() { return funcionario.getEndereco(); }
        public void setTelefone1(String telefone1) { funcionario.setTelefone1(telefone1); }
        public String getTelefone1() { return funcionario.getTelefone1(); }
        public void setTelefone2(String telefone2) { funcionario.setTelefone2(telefone2); }
        public String getTelefone2() { return funcionario.getTelefone2(); }
        public void setTelefone3(String telefone3) { funcionario.setTelefone3(telefone3); }
        public String getTelefone3() { return funcionario.getTelefone3(); }
        public void setEmail(String email) { funcionario.setEmail(email); }
        public String getEmail() { return funcionario.getEmail(); }
        public void setTelefoneParaReacado(String telefoneParaRecado) { funcionario.setTelefoneParaRecados(telefoneParaRecado); }
        public String getTelefoneParaRecado() { return funcionario.getTelefoneParaRecados(); }
        public void setDataDeCadastro(int dia, int mes, int ano)
        {
            try
            {
                funcionario.setDataDoCadastro(dia, mes, ano);
            }
            catch (Exception erro)
            {

                throw erro;
            }
        }
        public void getDataDoCadastro(ref int dia, ref int mes, ref int ano) { funcionario.getDataDoCadastro(ref dia, ref mes, ref ano); }
        public void setEstadoCivil(String estadoCivil) { this.estadoCivil = estadoCivil; }
        public String getEstadoCivil() { return estadoCivil; }
        public void setRegistroGeral(String registroGeral) { this.registroGeral = registroGeral; }
        public String getRegistroGeral() { return registroGeral; }    
        public static bool validar(long numero)
        {

            long aux = numero;
            long s = 0;
            long ind = 2;
            long dig1 = 0;
            long dig2 = 0;
            aux = aux / 100;
            int i = 0;
            
            
            while (i < 9)
            {
                s = s + aux % 10 * ind;
                aux = aux / 10;
                ind = ind + 1;
                i++;
                if (i == 9)
                {
                    dig1 = s % 11;
                    if (dig1 < 2)
                    {
                        dig1 = 0;
                    }
                    else
                    {
                        dig1 = 11 - dig1;
                    }
                }

            }


            //Digito 2

            s = 0;
            i = 0;
            ind = 3;
            aux = numero / 100;
            while (i < 9)
            {
                s = s + aux % 10 * ind;
                aux = aux / 10;
                ind = ind + 1;
                i++;
                if (i == 9)
                {
                    s = s + (dig1 * 2);
                    dig2 = s % 11;
                    if (dig2 < 2)
                    {
                        dig2 = 0;
                    }
                    else
                    {
                        dig2 = 11 - dig2;
                    }
                }

            }

            //teste

            if ((dig2 == (numero % 10)) && (dig1 == (numero % 100) / 10)&&(numero / 100 <= 999999999)
                && (numero / 100 != 0) && (numero != 11111111111) && (numero != 22222222222) && (numero != 33333333333)
                && (numero != 44444444444) && (numero != 55555555555) && (numero != 66666666666) && (numero != 77777777777)
                && (numero != 88888888888) && (numero != 99999999999))
            {
                return true;
            }            
            else
            {
                return false;
            }
            
                
        }    
        public void setCPF(long numero)
        {
            if (validar(numero)) CPF = numero;
            else
                throw new Exception("4");
        }
        public long getCPF() { return CPF; }
        public void setQuantidadeDeFilhos(int quantidadeDeFilhos) { this.quantidadeDeFilhos = quantidadeDeFilhos; }
        public int getQuantidadeDeFilhos() { return quantidadeDeFilhos; }
        public void setComisao(float comisao) { this.comisao = comisao; }
        public float getComisao() { return comisao; }
        public void setSenha(String senha) { this.senha = senha; }
        public String getSenha() { return senha; }
        public void setCredencial(String credencial) { this.credencial = credencial; }
        public String getCredencial() { return credencial; }
      

        

    
    
        
    }
}
